/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package unc.pds.model;

import java.rmi.RemoteException;
import javax.ejb.EJBObject;
import unc.pds.filemodel.AlbumRemote;
import unc.pds.filemodel.FolderRemote;
import unc.pds.util.Arch;
/**
 *
 * @author ain
 */
public interface IUser extends Postable {

    public String getNickname() throws RemoteException;
    public String getEmail() throws RemoteException;
    public String getName() throws RemoteException;
    public String getSername() throws RemoteException;


    //метод добавляет информацию о приглашении к пользователю
    public void wasInvitedByUser(Long key) throws RemoteException;
    public void sendInviteToUser(Long key) throws RemoteException;
    public void acceptUserInvite(Long key) throws RemoteException;
    public void wasAcceptedByUser(Long key) throws RemoteException;
    public void delcineUserInvite(Long key) throws RemoteException;
    public void wasDeclinedByUser(Long key) throws RemoteException;

    public void createGroup(Arch doc) throws RemoteException;

    public void wasInvitedByGroup(Long key) throws RemoteException;
    public void sendInviteToGroup(Long key) throws RemoteException;
    public void acceptGroupInvite(Long key) throws RemoteException;
    public void wasAcceptedByGroup(Long key) throws RemoteException;
    public void delcineGroupInvite(Long key) throws RemoteException;
    public void wasDeclinedByGroup(Long key) throws RemoteException;

    public void removeGroup(Long key) throws RemoteException;
    public void wasRemovedFromGroupBy(Long key) throws RemoteException;

    public void removeFriend(Long key) throws RemoteException;
    public void wasRemovedFromFriendsBy(Long key) throws RemoteException;

    public void banFriend(Long key) throws RemoteException;
    public void unbanFriend(Long key) throws RemoteException;

    //public void somevoidmethod();

    public GroupRemote[] getGroups() throws RemoteException;
    public GroupRemote[] getMarkerGroups() throws RemoteException;

    public UserRemote[] getFriends() throws RemoteException;
    public UserRemote[] getNewFriends() throws RemoteException;
    public UserRemote[] getBanFriends() throws RemoteException;

    public boolean isInGroup(Long key) throws RemoteException;
    public boolean isFriend(Long key) throws RemoteException;
    public boolean isWannedFriend(Long key) throws RemoteException;
    public boolean isBanned(Long key) throws RemoteException;
}
